This is a joint review of 2002 for the programming languages
Lua, Perl, Python, Ruby, and Tcl.
It was a cooperative effort by people from the five communities.
[This page was derived from this email message, formerly here.]
2002 was a very busy year for Lua [1]. A major new version (5.0) was discussed, planned, implemented, and released in alpha and beta versions. We also saw a marked increase of the size and participation of the Lua community. Details on this and other events that happened to Lua in 2002 follow.
Work on a new version
The plans for a new version (4.1) and their discussion in the
mailing list [2], which had officially started with the release of
an alpha version in July 2001 and several work versions since then,
finally converged to a comprehensive mature proposal for Lua 5.0 in
April. An alpha version was released in August and a beta version
was released on December; the final version of Lua 5.0 expected to
be released by February 2003. Lua 5.0 is an important step in the
evolution of Lua (hence the leap from 4.0 directly to 5.0). Lua 5.0
includes several new features, such as lexical scoping, Lua
coroutines and support for external multithreading and coroutines,
metatables and metamethods, fine control of global name resolution,
tail calls, fast register-based virtual machine, safe
garbage-collector metamethods, new error handling protocol, and
more. All this is of course done respecting our design goals:
simplicity, efficiency, portability, and low embedding cost.
Choosing a new license
Starting with Lua 5.0, Lua will be released under the MIT license
[3]. Up to now we had our own license [4], very similar to but not
identical to the zlib license [5] and others. The community pointed
to us that the license was sometimes a source of confusion and
misunderstanding. So we decided that having a standard license would
clear the issue and allow more people, especially in the industry, to
choose Lua without being concerned with legal matters.
Community participation
The active participation of the Lua community -- both in the mailing
list and in the lua-users wiki [6] -- was an important ingredient in
making all this happen. The community is also organizing itself.
Since May, it maintains a web interface to the mailing list archive
[7] that can be searched and also referred to in lua-l: postings now
have a permanent link and this helps to answer recurring
questions. This web interface is much faster than the one at Yahoo
Groups that exists since March 1999 (and also has no annoying
ads). A newsgroup interface to the mailing list [8] was created at
gname.org in July by their own initiative.
The mailing list remains the premier forum for discussing Lua. It has now over 700 subscribers (435 direct subscribers plus 284 registered at Yahoo Groups). Novice and experts participate actively in the discussions, which are instructive and friendly.
The wiki at lua-users also experienced a marked growth in 2002 and is becoming a major source of detailed technical information about Lua, some of it distilled and condensed from lua-l postings. Many people contributed new pages, corrected and expanded existing ones, and helped to maintain several pages moved from www.lua.org. The wiki also now contains the details and implementations of feature proposals. As intended when it was launched, the wiki has become the ideal companion for the mailing list.
A small part of the community got together in person in February, at a Lua Library Design Workshop [9] held at Harvard University. The move in Lua 5.0 to namespaces in libraries was one consequence of this meeting. The workshop also provided an opportunity to meet Roberto Ierusalimschy [10], Lua's chief architect.
Lua in 2003
2003 will bring the official release of Lua 5.0 and also probably
Lua 5.1, at least in work stage. Our main focus in Lua 5.1 is the
implementation of incremental garbage collection to replace the
current atomic mark-and-sweep. The need for this was identified by
the community, especially those using Lua for games. We shall
probably also see a new draft of the long-waited Lua book by
Roberto, updated for Lua 5.
References
While 2002 was a year during which the Perl 6 design development process grown up, Perl 5 was not left behind. A new major version, Perl 5.8.0, was released, introducing major features.
Perl 5.8.0 released
Perl 5.8.0 was released after more than two years of work. Among its new
features [1], the most important ones are a full support for Unicode, a
new implementation of threads, a completely reworked I/O subsystem, and
support for 64-bit architectures. This release was also a personal win
from the point of view of the Perl developers, because it was extensively
tested, due to a much improved test suite, and to volunteers to run it on
a daily basis on a wide range of OSes and configurations.
There's also more in Perl than Perl itself. Numerous projects based on Perl have also started or have significantly evolved. Among them, I have to mention at least the popular mod_perl Apache module [2] which allows to embed Perl into a web server.
The Community
The Perl community is so dynamic and well-organized that I can't choose
where to begin. Well, the spinal nerve of this community is probably the
Comprehensive Perl Archive Network (or CPAN [3]), central repository for
a whole universe of Perl modules. But the community is organized among
several axes : on Internet, you'll find an extensive set of mailing lists
[4], newsgroups in the comp.lang.perl.* hierarchy, news and weblogs [5],
help and idea sharing for beginners and for gurus at perlmonks [6], and
I'm sure I'm forgetting a load of resources. There are also two
noticeable high-quality publications : the Perl Review [7] and the Perl
Journal [8].
In the real world, numerous Perl users groups (known as the Perl mongers [9]) have succeeded in cementing this community as well as promoting the language. Among the factual successes are the organization of the Yet Another Perl Conferences [9], that will continue in 2003, and the funding of the Perl 6 core team through the Perl Foundation [10] (Perl 6 being the next major step in Perl, redesigned and reimplemented from the ground up).
Perl 5 in 2003
The development version of Perl (5.9.0) is being actively worked on, and
development releases are to be expected, as well as a new maintenance
release, Perl 5.8.1, aimed at fixing the most outstanding bugs discovered
in Perl 5.8.0. Currently, it appears that those bugs pertain (quite
logically) to the newest features : threads and Unicode. The to-do lists
are not small, and, with the start of the Perl 6 project, Perl needs
contributors more than ever : as a popular saying reminds us, patches are
welcome.
If you want to follow what's happening in the world of Perl development, you can read the weekly summaries of the developers' mailing lists, published on perl.com [11] for Perl 6 and Parrot (Parrot being the future Perl 6 virtual machine) and on use.perl [5] for Perl 5.
In the process we hope to bring Perl to higher levels to maturity, and to have fun. At least that's how the future looks from there.
References
The Python community spent a good part of 2002 learning how to use new-style classes, introduced with Python 2.2, and polishing their implementation with a couple of maintenance releases. We also released an alpha version of Python 2.3 on the last day of the year.
Python 2.2 released
The major new feature of Python 2.2, which was actually released just
before Christmas 2001, is new-style classes. This feature eliminates
many of the differences between Python's builtin types (list, dict,
&c.) and user-defined types implemented with class statements. It
allows programmers to subclass builtin types in Python and makes it
easier to define new classes in C.
New-style classes introduced many subtle differences in class semantics and many new features for classes, including a super function, class and static methods, and properties. Backwards compatibility was addressed in a fairly clean way: Both new-style classes and so-called "classic" classes are available in the interpreter via different metaclasses. The classic metaclass is used unless the class inherits from the new builtin type "object" or explicitly declares its metaclass.
See Guido van Rossum's essay "Unifying types and classes in Python 2.2" for a more thorough discussion of new-style classes. http://www.python.org/2.2.2/descrintro.html
There were four maintenance releases during the calendar year. The currently recommended versions of Python are 2.2.2 and 2.1.3. The 2.2.2 release seems to be quite stable, with more than 100 bugs fixed since the original 2.2 release. The 2.1.x releases this year fixed a few critical bugs.
Python in 2003
The goals for Python 2.3 are modest compared to new-style classes.
The alpha release on Dec. 31 introduced only minor language changes,
like a new boolean type. Most of the improvements are to the standard
library, including a new BerkeleyDB interface, a logging module styled
after log4j, a family of new datetime types, a pair of set types, and
a new random number generator (Mersenne Twister). The module import
mechanism was also improved, with a new set of hooks and support for
zip archives.
The custom object allocator, which has been an optional, compile-time feature for a couple of releases, has been enabled by default for 2.3. It is a fast, special-purpose allocator for small blocks that sits on top of the platform malloc. It saw a major overhaul to improve stability and performance between 2.2 and 2.3
See Andrew Kuchling's "What's New in Python 2.3" document for more information about the release. http://www.python.org/doc/2.3a1/whatsnew/
One reason (among many) for the more modest goals of Python 2.3 is a sense in the community that the language is changing too quickly. The perception of a large or vocal part of the community is that stability, performance, and libraries will provide more benefit than new core language features. When Guido proposed the addition of a boolean type on comp.lang.python, the thread ran on for a couple of weeks and 375 messages with a vigorous opposition. It seems fair to observe, however, that many people believe that Python changes too quickly and that the new features they need are important enough to add anyway.
Notable developments
The year saw a lot of development activity in the larger Python
community. I've tried to include some highlights from important or
interesting projects, but I'm sure there are omissions.
Four Python conferences were held in 2002, including a couple of European conferences. Many new books were published including the well-regarded Python Cookbook and the first two books on Jython, the Java implementation of Python.
Keeping up with Python news
Some valuable summarizes in increasing order of frequency:
Bi-weekly summaries of python-dev mailing list
http://www.python.org/dev/summary/Dr. Dobb's (weekly) Python URL
http://www.ddj.com/topics/pythonurl/Daily Python URL
http://www.pythonware.com/daily/index.htm
Ruby [1] continued to delight its practitioners and, perhaps, tempt those who work in other languages, throughout 2002. Increased traffic on the ruby-talk mailing list suggests that more and more people from around the world are discovering Ruby and the joys it brings to programming, and visions of Ruby's future have enthused Rubyists everywhere.
Web Application Development with Ruby
Web application development with Ruby is beginning to come into its own,
and many web development tools achieved milestone stability releases.
Web developers now have several options, including eRuby [2] (for
embedding Ruby code directly into HTML documents), Amrita [3] (an
alternative that uses templates to cleanly separate logic and
presentation) and complete site-development frameworks like CGIKit [4]
and ILE [5]. The mod_ruby [2] module for Apache is also fast and stable.
Virtual Machines
The quest for improved performance also sparked a number of new Ruby
projects. There are now several virtual machine (VM) development
efforts, including Cardinal [6] (a Ruby front-end to Parrot), JRuby [7]
(a Java implementation of the Ruby interpreter) and an as-yet-unnamed VM
that Matz, the creator of Ruby, and his co-conspirators are keeping
a closely guarded secret.
Improved Support for Windows and Mac OS X
A lot of focus has been placed on enhancing Ruby's usability with
non-Unix operating systems. The Ruby distribution for Windows [8]
includes many popular Ruby extensions, as well as an HTML Help version
of Thomas and Hunt's Programming Ruby, providing a very easy way for
users to get up and running with either the stable or development
release of Ruby. Also, beginning with the 10.2 (Jaguar) release, Ruby is
now a standard part of the Mac OS X operating system.
New Versions
The year ended with the release of Ruby 1.6.8, which is promised to be
the last release in the 1.6.x series. The end of 2002 also saw a
"preview" release of Ruby 1.8. In addition to enhancements in the Ruby
language itself, the upcoming 1.8 release will incorporate several new
modules into Ruby's standard library. Test::Unit [9], a rock-solid,
object oriented automated unit testing framework will be included in the
standard distribution. Another planned addition is REXML [10], a clean
and intuitive XML processing library.
Ruby in Print
There were many signs of the rising popularity of Ruby in 2002. A number
of new English language books, such as Ruby in a Nutshell (Yukihiro
Matsumoto), Teach Yourself Ruby in 21 Days (Mark Slagell), The Ruby Way
(Hal Fulton) and Ruby Developer's Guide (Michael Neumann, Robert Feldt
and Lyle Johnson), were published this year. In Japan, an additional 11
Ruby books were published (bringing the total in Japanese to 27).
Ruby Conference
A notable event was the second annual Ruby Conference, held in
November 2002 in Seattle, WA, USA. There were about fifteen
presentations, as well as a keynote speech by Matz. Slides of those
talks are available online at
http://www.zenspider.com/Languages/Ruby/RubyConf2002/ .
Ruby in 2003
The upcoming year promises a number of exciting new developments. In
addition to the previously mentioned Ruby 1.8, one of the most eagerly
anticipated projects is FreeRIDE [11], a powerful cross-platform IDE for
Ruby. This software is being designed and built by a large group of
volunteers and is itself a great testimony to the strong spirit of the
Ruby community.
Challenges
In addition to the many successes, we as a community face a number of
challenges. One is the need for better documentation and documentation
tools. A related problem that a good deal of the documentation for Ruby
libraries is only available in Japanese, and as a result there is
substantial interest in having English translations of those texts.
Another challenge for the Ruby community is the need for more well
defined methods of packaging and distribution for Ruby libraries and
extension modules.
More about Ruby
Ruby's home page is the official source for downloads as well as
information about CVS and mailing list access. The newly redesigned Ruby
Application Archive [12] is an online catalog of Ruby libraries and
extension modules. The Ruby Weekly News [13] is posted every week to the
ruby-talk mailing list and provides a nice summary of what people are
talking about. For a more comprehensive account, archives of the mailing
list [14] are available as well. Finally, an important resource for Ruby
developers is the Ruby Garden [15]. The Ruby Garden is a portal site
that provides message boards, online polls and links to other popular
Ruby web sites including the Ruby Garden Wiki [16].
References
2002 was a significant year for the Tcl community - culminating in the release of Tcl/Tk 8.4 after a long gestation period.
Tcl 8.4 released
The 8.4 release includes a number of significant features, including
The other significant development in the Tcl world was in the area of portability and deployment. The introduction of VFS to the core enables Starkits [2], which provide easy single-file deployment of applications and packages (like Java jar files, but with more power). They can be interpreted using either Tclkit, a single file Tcl/Tk interpreter available on numerous platforms, or ActiveTcl, the ActiveState Tcl distribution. An archive of Starkits is available at [3].
The Community
The Tcl community continues to be an active and vibrant group of very
diverse characters, supported by a number of forums:
Notable developments
The last year saw the continued use of Tcl/Tk in a very wide variety of
applications (both Open Source and commercial), including:
Tcl in 2003
2003 is likely to be a year of consolidation - Tcl/Tk 8.4.1 is out,
solid, and becoming the standard Tcl version; plans for 8.5 and/or 9 are
under consideration. The coming year is also likely to see more work in
the area of repositories/archives, more interfaces to other languages
for Tcl/Tk, and yet more platforms supported.
References
Thanks to the authors
Luiz Henrique de Figueiredo (Lua)
Rafael Garcia-Suarez (Perl)
Jeremy Hylton (Python)
The Ruby Community (Ruby)
Jeff Hobbs, Steve Landers, and Jean-Claude Wippler (Tcl)
Additional thanks to Piers Cawley, Jarkko Hietaniemi, Jeremy Hylton,
Lyle Johnson, Dan Sugalski, Greg Sullivan, and Jean-Claude Wippler.
A copy of this email is available at http://www.vendian.org/language_year/
There are many useful and interesting languages not included here. If you write a similar summary, I would be glad to include it on the webpage. You might also consider similar collaborations within other super-communities.
[...]
Mitchell Charity
Notes: Doables: Add traffic sketch. History: 2003-Jan-16 History and rest of page footer added. Replaced PRE formatted version with normal html. Changes: Modified second paragraph. Two spelling corrections. "Notes". Removed "feel free to forward email" paragraph. 2003-Jan-16 Stub page replaced by full. Off mirrors. 2003-Jan-14 Email sent. 2003-Jan-13 Stub page ready. Full page up on mirrors. Reflector works.